library(tidyverse)
library(plotly)
library(leaflet)
single_color <- "#3182bd"
basic_theme <- theme(
  plot.title = element_text(size = 24, vjust = .5, hjust = .5),
  axis.title = element_text(size = 16, hjust = .5, vjust = .5),
  panel.background = element_rect(fill = "white"),
  legend.position = "none",
  panel.grid.major.y = element_line(color = "grey75", size = .1, linetype = "solid")
)
drivers <- feather::read_feather("drivers.feather")
incidents <- feather::read_feather("incidents.feather")
non_motorists <- feather::read_feather("non_motorists.feather")
combo <- feather::read_feather("combo.feather")
temp <- incidents %>%
  filter(!not_in_county) %>%
  mutate(non_motorist_involved = !(related_non_motorist == "N/A"))
temp1 <- temp %>% filter(non_motorist_involved)
temp2 <- temp %>% filter(!non_motorist_involved)
leaflet() %>%
  addTiles() %>%
  addCircleMarkers(
    data = temp2,
    lng = ~longitude, lat = ~latitude,
    radius = 3, stroke = TRUE, weight = 2, opacity = 1, color = "blue", group = "Vehicles"
  ) %>%
    addCircleMarkers(
    data = temp1,
    lng = ~longitude, lat = ~latitude,
    radius = 3, stroke = TRUE, weight = 2, opacity = 1, color = "red", group = "Non Motorists"
  ) %>%
  addLayersControl(overlayGroups = c("Non Motorists", "Vehicles"))
ordered_injury <- drivers %>%
  count(injury_severity) %>%
  arrange(desc(n)) %>%
  pull(injury_severity)
speed_limit_plot <- drivers %>%
  mutate(
    speed_limit = factor(c("LOW", "MEDIUM", "HIGH")[1 + findInterval(speed_limit, c(31, 46))], levels = c("LOW", "MEDIUM", "HIGH")),
    injury_severity = factor(injury_severity, ordered_injury)
  ) %>%
  group_by(speed_limit, injury_severity) %>%
  tally() %>%
  rename(`Speed Limit` = speed_limit, `Injury Severity` = injury_severity) %>%
  ggplot() +
  geom_bar(aes(x = `Speed Limit`, fill = `Injury Severity`,  weight = n), position = "fill") +
  basic_theme +
  theme(legend.position = "top") +
  ggtitle("Injuries and Speed Limits") +
  ylab("Proportion")
ggplotly(speed_limit_plot)
ordered_injury <- drivers %>%
  count(injury_severity) %>%
  arrange(desc(n)) %>%
  pull(injury_severity)
speed_limit_plot2 <- drivers %>%
  mutate(
    speed_limit = factor(as.character(speed_limit), levels = as.character(seq.int(from = 0, to = 70, by = 5))),
    injury_severity = factor(injury_severity, ordered_injury)) %>%
  group_by(speed_limit, injury_severity) %>%
  tally() %>%
  rename(`Speed Limit` = speed_limit, `Injury Severity` = injury_severity) %>%
  ggplot() +
  geom_bar(aes(x = `Speed Limit`, fill = `Injury Severity`,  weight = n), position = "fill") +
  basic_theme +
  theme(legend.position = "top") +
  ggtitle("Injuries and Speed Limits") +
  ylab("Proportion")
ggplotly(speed_limit_plot2) %>% layout(legend = list(orientation = 'h'))